package com.misyi.designpattern.factory.simplefactory;

/**
 * 简单工厂模式
 *
 * @author licong
 * @date 2021-09-11 上午10:38
 */
public class FactoryPatternDemo {

    public static void main(String[] args) {
        // 将对象的创建进行封装, 就是对象的实现方式进行了修改, 那么调用方不用做任何变动
        Product product = ProductFactory.create();
        product.execute();

        // Spring 的 IOC 实际上就是一个大工厂. 我们需要什么类, 直接通过注解的方式找 Spring 进行注入, 不需要我们进行创建
    }


    public interface Product {
        void execute();
    }


    public static class ProductServiceImpl1 implements Product {
        @Override
        public void execute() {
            System.out.println("产品 1 的功能实现");
        }
    }

    public static class ProductServiceImpl2 implements Product {
        @Override
        public void execute() {
            System.out.println("产品 2 的功能实现");
        }
    }

    public static class ProductFactory {

        private ProductFactory(){}

        public static Product create() {
            return new ProductServiceImpl2();
        }
    }

}
